package com.ronz.sort;

import javax.smartcardio.CommandAPDU;
import java.util.Arrays;
import java.util.concurrent.locks.Condition;

/**
 * @Description TODO
 * @Author Ronz
 * @Date 2021/1/7 18:01
 * @Version 1.0
 */
public class No2_SelectSort {

    public static void main(String[] args) {
        int[] arr = {5,7,2,1,8,3};

        //System.out.println("原序列：" + Arrays.toString(arr));
        CommonUtils.printTime();
        selectSort(CommonUtils.getArr());
        CommonUtils.printTime();
        //System.out.println("排序后：" + Arrays.toString(arr));

    }


    /**
     * @Description 選擇排序
     *              每一轮排序中，选出最小的放在最前面
     * @Param [arr]
     * @return void
     */
    public static void selectSort(int[] arr){

        int min;
        int index;
        // N 个数据，要进行 N-1 次选择排序
        for (int i=1; i<arr.length; i++){
            min = arr[i-1];       // 假设本轮比较的第一个值就是最小值
            index = i-1;
            for (int j=i; j<arr.length; j++){
                // 找出数组中的最小值以及最小值的索引
                if (arr[j] < min){
                    min = arr[j];
                    index = j;
                }
            }
            // 判断第一个元素是不是最小元素，如果不是就交换位置
            if(index != 0){
                // 最小元素和第一个元素交换位置
                arr[index] = arr[i-1];
                arr[i-1] = min;
            }
            //System.out.print("第 " + i +" 轮排序结果为：");
            //System.out.println(Arrays.toString(arr));
        }
    }
}
